查看原文
其他

SpringBoot中自定义参数绑定

2018-01-26 悟空 玩转JavaEE

本文是vhr系列的第十篇,vhr项目地址https://github.com/lenve/vhr  

正常情况下,前端传递来的参数都能直接被SpringMVC接收,但是也会遇到一些特殊情况,比如Date对象,当我的前端传来的一个日期时,就需要服务端自定义参数绑定,将前端的日期进行转换。自定义参数绑定也很简单,分两个步骤:

1.自定义参数转换器

自定义参数转换器实现Converter接口,如下:

public class DateConverter implements Converter<String,Date> {    private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");    @Override    public Date convert(String s) {        if ("".equals(s) || s == null) {            return null;        }        try {            return simpleDateFormat.parse(s);        } catch (ParseException e) {            e.printStackTrace();        }        return null;    } }

convert方法接收一个字符串参数,这个参数就是前端传来的日期字符串,这个字符串满足yyyy-MM-dd格式,然后通过SimpleDateFormat将这个字符串转为一个Date对象返回即可。

2.配置转换器

自定义WebMvcConfig继承WebMvcConfigurerAdapter,在addFormatters方法中进行配置:

@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter {    @Override    public void addFormatters(FormatterRegistry registry) {        registry.addConverter(new DateConverter());    } }

OK,如上两步之后,我们就可以在服务端接收一个前端传来的字符串日期并将之转为Java中的Date对象了,前端日期控件如下:

<el-date-picker    v-model="emp.birthday"    size="mini"    value-format="yyyy-MM-dd HH:mm:ss"    style="width: 150px"    type="date"    placeholder="出生日期"> </el-date-picker>

服务端接口如下:

@RequestMapping(value = "/emp", method = RequestMethod.POST) public RespBean addEmp(Employee employee) {    if (empService.addEmp(employee) == 1) {        return new RespBean("success", "添加成功!");    }    return new RespBean("error", "添加失败!"); }

其中Employee中有一个名为birthday的属性,该属性的数据类型是一个Date,源码我就不贴了,小伙伴直接在本项目源码中查看即可。

本系列其他文章:

1.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)
2.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(二)
3.SpringSecurity中密码加盐与SpringBoot中异常统一处理
4.axios请求封装和异常统一处理
5.权限管理模块中动态加载Vue组件
6.SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(六)
7.vhr部门管理数据库设计与编程
8.使用MyBatis轻松实现递归查询与存储过程调用
9.ElementUI中tree控件踩坑记    

关注公众号,可以及时接收到最新文章:

 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存